package thread_test;

// 1. 创建自己的类,继承自 Thread
class MyThread3 extends Thread {
    // run 方法是该线程的入口方法
    @Override
    public void run() {
        while (true) {
            // currentThread.getName()这个方法是获取当前线程的名字
            System.out.println("hello " + currentThread().getName());
            try {
                // sleep()这个方法会让当前线程进入休眠,()中参数是ms,为了减慢循环频率
                // 这个方法可能抛出异常,所以需要用 try-catch包住
                sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

public class ThreadDemo {
    public static void main(String[] args) {
        // 2. 根据上面创建的类,创建出实例
        Thread t1 = new MyThread3();
        // 3. start(),这个方法用来启动线程,这才是创建出线程
        //    调用这个方法,才会真正调用系统 api ,在系统内核中创建出线程
        t1.start();

        // 在main里启动另一个死循环,直观感受两个线程在"并发"执行
        while (true) {
            System.out.println("hello " + Thread.currentThread().getName());
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}
